farmterritoryfandomcom_ru-20200215-history
Модуль:Factory
local p = {} local arrData = mw.loadData( 'Module:DataFactory' ) local Data = mw.loadData( 'Module:DataCrops' ) local materials = mw.loadData( 'Module:DataMaterials' ) --Карточка фабрики-- function p.Factory( frame ) local id = frame.args1 local text=' [[Файл:'..arrDataid.name..'.png|280px]] '.. ' Название: '..arrDataid.name..' '.. ' Тип: Фабрика '.. ' Цена: '..arrDataid.buy..' 15px c уровня '..arrDataid.level if arrDataid.buyagro~=0 then text=text..', '..arrDataid.buyagro..' 15px c уровня '..arrDataid.levelagro end text=text..' '.. ' Время производства продукции в минутах: '..arrDataid.tm..' '.. ' Количество ресурсов, загружаемых за 1 раз: '..arrDataid.c..' '.. ' Опыт за покупку фабрики: '..arrDataid.exper..' '.. ' Стоимость при удалении: '..arrDataid.del..' 15px '.. ' Локация: '..arrDataid.location..' '.. ' ' --Стройматериалы-- text=text..Factorybuild(id) --Производство-- text=text..Factoryres(id) --Улучшения в Торговом порту-- text=text..port(id) return text end --Улучшение в Порту-- function port(id) local text=' Улучшение в Торговом порту ' local ok, msg = pcall(function () if arrDataid.port nil then error() end end) if ok then text=text..' Фабрику можно улучшить в Торговом порту. ' else text=text..' Фабрику нельзя улучшить в Торговом порту. ' return text end text=text..' Что можно улучшить? Для одних фабрик можно уменьшить время производства товара, для других фабрик увеличить количество загружаемого сырья с 3 до 6. Всего можно улучшить 8 таких фабрик на локации. '.. ' '.. ' '.. ' Уровень '.. ' Цена 15px '.. ' Цена 15px '.. ' Количество ресурсов, загружаемых за 1 раз '.. ' Время производства продукции в минутах '.. ' ' local c=arrDataid.c local tm=arrDataid.tm local style='' local style1='' for i,v in ipairs(arrDataid.port) do c=c+v.vol if v.vol~=0 then style=' color:#088A08; font-size: 20px' end if v.tm~=0 then style1=' color:#088A08; font-size: 20px' tm=v.tm end text= text..' '.. ' '..v.level..' '.. ' '..v.buy..' '.. ' '..v.buy1..' '.. ' '..c..' '.. ' '..tm..' '.. ' ' i=i+1 end text=text..' ' return text end --Стройматериалы-- function Factorybuild(id) local text=' Строительство ' local ok, msg = pcall(function () if arrDataid.materials nil then error() end end) local ok1, msg1 = pcall(function () if arrDataid.build nil then error() end end) if ok and ok1 then text=text..'Ошибка!!! Указаны оба значения build и materials ' return text end if ok1 then text=text..arrDataid.build return text end if ok then if arrDataid.materials 1 then text=text..'sdsdsd' else text=text..' После покупки фабрику необходимо еще построить, для этого нужно будет купить материалы. ' end else text=text..'Фабрика строится мгновенно, сразу же при покупке. Материалы для запуска фабрики не нужны.' return text end text=text..' '.. ' '.. ' '.. ' Материалы '.. ' Количество '.. ' Цена 15px '.. ' Стоимость 15px '.. ' ' local total=0 for i,v in ipairs(arrDataid.materials) do local ok, msg = pcall(function () if materialsv.name.buy nil then error() end end) if ok then text= text..' '.. ' 50px '.. ' '..v.name..' '.. ' '..v.c..' '.. ' '..materialsv.name.buy..' '.. ' '..materialsv.name.buy*v.c..' '.. ' ' total=total+materialsv.name.buy*v.c else text= text..' '.. ' '..v.name..'Нет в БД '.. ' Нет в БД '.. ' Нет в БД '.. ' ' end i=i+1 end text= text..' '.. ' Итого: '.. ' '.. ' '.. ' '.. ' '..total..' '.. ' ' text=text..' ' return text end --Добавляется основной ресурс-- function baseres(id) local text='' local ff=0 local ok, msg = pcall(function () if arrDataid.resourcebase nil then error() end end) if ok then text=text..' Для производства продукции на эту фабрику необходимо загружать два вида сырья: основное и сменяемое сырье. Основное сырье - сырье, которое требуется для производства каждой единицы продукции. Сменяемое сырье – сырье, которое меняется для производства каждого вида товара. ' else return text, ff end text=text..' '.. ' '.. ' '.. ' Основное сырье '.. ' Цена 15px '.. ' ' local ff1=0 local ff3='' for i,v in ipairs(arrDataid.resourcebase) do local ok, msg = pcall(function () if tree_changev.name.sell nil then error() end end) local ok1, msg1 = pcall(function () if Datav.name.buy nil then error() end end) if ok then ff1=tree_changev.name.sell elseif ok1 then ff1=Datav.name.buy else ff3='- БД' ff1=0 end text=text..' '.. ' 50px '.. ' '..v.name..ff3..' '.. ' '..ff1..' '.. ' ' ff=ff+ff1 end text=text..' ' return text, ff end --Производимая продукция и ресурсы-- function Factoryres(id) local animal = mw.loadData( 'Module:DataAnimal' ) local tree = mw.loadData( 'Module:DataTree' ) local text='' local text1='' local total=0 --Преобразуем деревья для поиска по плодам-- tree_change = {} for key,v in pairs(tree) do if v.nameprod '' then tree_changekey={} tree_changekey.sell=v.sell tree_changekey.fab=v.name tree_changekey.nameprod=v.name tree_changekey.tp1=v.tp1 else tree_changev.nameprod={} tree_changev.nameprod.sell=v.sell tree_changev.nameprod.fab=v.name tree_changev.nameprod.nameprod=v.nameprod tree_changev.nameprod.tp1=v.tp1 end end --Преобразуем продукцию животных для поиска по плодам-- for key,v in pairs(animal) do tree_changev.nameprod={} tree_changev.nameprod.sell=v.sell tree_changev.nameprod.fab=v.name tree_changev.nameprod.nameprod=v.nameprod tree_changev.nameprod.tp1=v.tp1 end --Преобразуем продукцию фабрик для поиска по продукции-- for key,v in pairs(arrData) do for i,v1 in ipairs(v.resources) do tree_changev1.nameprod={} tree_changev1.nameprod.sell=v1.sell tree_changev1.nameprod.nameprod=v1.nameprod tree_changev1.nameprod.fab=key end end local text2='' local ff=0 text2, ff=baseres(id) for i,v in ipairs(arrDataid.resources) do local nameres1=v.nameres1 local nameres1_1='' local cres1=0 local cprod=0 local ok, msg = pcall(function () if Datanameres1.tp nil then error() end end) --Проверка на наличие семян в БД-- if ok then cres1=Datanameres1.buy nameres1_1=''..nameres1..'' else --Проверка на наличие деревьев и продукции фабрик в БД-- local ok1, msg1 = pcall(function () if tree_changenameres1.sell nil then error() end end) if ok1 then cres1=tree_changenameres1.sell if tree_changenameres1.tp1 'Животные' then nameres1_1='[['..tree_changenameres1.nameprod..']]' else nameres1_1='[['..tree_changenameres1.fab..'|'..tree_changenameres1.nameprod..']]' end else nameres1_1=nameres1..'Нет в БД' end end local nameprod=v.nameprod local nameprod_1='' local ok3, msg3 = pcall(function () if tree_changenameprod.sell nil then error() end end) if ok3 then cprod=tree_changenameprod.sell nameprod_1=nameprod else nameprod_1=nameprod..'Нет в БД' end local rez=math.floor((cprod-cres1-ff)*100)/100 text1=text1.... '50px'.. ''..nameres1_1.... ..cres1.... '50px'.. ..nameprod_1.... ..cprod.... ..rez.... '' i=i+1 total=total+1 end text=' Производство '.. ' В следующей таблице находится список ресурсов, загружаемых на фабрику, а также список производимых товаров. ' --Добавлется основной ресурс-- text=text..text2 text=text..' Открыть/закрыть таблицу '.. ' Всего: '..total..' '.. ' '.. ' '.. ' '.. ' Сырье '.. ' Цена 15px '.. ' '.. ' Продукция '.. ' Цена 15px '.. ' Доход 15px '.. ' '..text1..' ' return text end --Список фабрик на которых можно переработать продукт frame-- function p.fab(frame) local id='' if type(frame) 'string' then id=frame elseif type(frame) 'table' then id= frame.args1 end local text='' local text1='' local rb=false local arrData = mw.loadData( 'Module:DataFactory' ) for key,v in pairs(arrData) do text=' ' local ok, msg = pcall(function () if v.resourcebase nil then error() end end) if ok then for key1,v1 in pairs(v.resourcebase) do if v1.name id then text1=text1..' '..key..' ' rb=true break end end end if not rb then for key2,v2 in pairs(v.resources) do if v2.nameres1 id then text1=text1..' '..key..' ' break end end end text=text..text1..' ' end if text1~='' then text=' Можно переработать на фабрике: '..text..' ' else text=' Можно переработать на фабрике: Пока нет информации ' end return text end --Список продукции фабрик-- function p.product() local text=' ' product={} local j=1 for key,v in pairs(arrData) do for i,v1 in ipairs(v.resources) do productj={} productj.fab=key productj.name=v1.nameprod j=j+1 end end table.sort(product,function( a, b ) return a.name < b.name end ) local r='' local r_pred for i,v in ipairs(product) do if i 1 then text=text..' '..string.sub (v.name, 1,1)..' ' else if string.sub (producti.name, 1,2) '..string.sub (v.name, 1,2)..' ' end end text=text..' '..v.name..' ' end text=text..' ' return text end return p